<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>SDK demo</title>
</head>

<body>
  <div id="test">测试SDK</div>
  <script src="./sdk.js"></script>
  <script>
    // 模拟uuid
    if (!localStorage.getItem('custom_UUID')) {
      const customUUID = Math.random().toString().slice(-6);
      localStorage.setItem('custom_UUID', customUUID);
    }
    window.dt && dt.set({
      pid: 'project_test_id', // [必填]项目id, 由灯塔项目组统一分配
      uuid: localStorage.getItem('custom_UUID') || '', // [可选]设备唯一id, 用于计算uv数&设备分布. 一般在cookie中可以取到, 没有uuid可用设备mac/idfa/imei替代. 或者在storage的key中存入随机数字, 模拟设备唯一id.
      ucid: '', // [可选]用户ucid, 用于发生异常时追踪用户信息, 一般在cookie中可以取到, 没有可传空字符串

      is_test: false, // 是否为测试数据, 默认为false(测试模式下打点数据仅供浏览, 不会展示在系统中)
      record: {
        time_on_page: true, // 是否监控用户在线时长数据, 默认为true
        performance: true, // 是否监控页面载入性能, 默认为true
        js_error: true, //  是否监控页面报错信息, 默认为true
        // 配置需要监控的页面报错类别, 仅在js_error为true时生效, 默认均为true(可以将配置改为false, 以屏蔽不需要上报的错误类别)
        js_error_report_config: {
          ERROR_RUNTIME: true, // js运行时报错
          ERROR_SCRIPT: true, // js资源加载失败
          ERROR_STYLE: true, // css资源加载失败
          ERROR_IMAGE: true, // 图片资源加载失败
          ERROR_AUDIO: true, // 音频资源加载失败
          ERROR_VIDEO: true, // 视频资源加载失败
          ERROR_CONSOLE: true, // vue运行时报错
          ERROR_TRY_CATCH: true, // 未catch错误
          // 自定义检测函数, 上报前最后判断是否需要报告该错误
          // 回调函数说明
          // 传入参数 => 
          //            desc:  字符串, 错误描述
          //            stack: 字符串, 错误堆栈信息
          // 返回值 =>  
          //            true  : 上报打点请求
          //            false : 不需要上报
          checkErrrorNeedReport: function (desc, stack) {
            return true
          }
        }
      },

      // 业务方的js版本号, 会随着打点数据一起上传, 方便区分数据来源
      // 可以不填, 默认为1.0.0
      version: '1.0.0',

      // 对于如同
      // test.com/detail/1.html
      // test.com/detail/2.html
      // test.com/detail/3.html
      // ...
      // 这种页面来说, 虽然url不同, 但他们本质上是同一个页面
      // 因此需要业务方传入一个处理函数, 根据当前url解析出真实的页面类型(例如: 二手房列表/经纪人详情页), 以便灯塔系统对错误来源进行分类
      // 回调函数说明
      // 传入参数 => window.location
      // 返回值 => 对应的的页面类型(50字以内, 建议返回汉字, 方便查看), 默认是返回当前页面的url
      getPageType: function (location) {
        return `${location.host}${location.pathname}`
      }
    })

    // 通过点击手动创建错误
    const testDOM = document.getElementById('test');
    testDOM.addEventListener('click', function () {
      console.log(window.a.b);
    });
  </script>
</body>

</html>